Certain computer graphics applications graphically render the surface of a three-dimensional virtual object. The surface of a three-dimensional virtual object is generally represented as a mesh of polygonal surface elements, for example, triangles. Attributes, such as color intensity, are assigned to surface elements of the virtual object, which are then displayed to the user.
The resolution of the surface mesh is typically chosen according to the three-dimensional complexity of the object. For example, rendering a virtual object having a complex geometry may require a tight mesh of many small surface elements, whereas rendering a virtual object of simpler shape may be performed with a looser mesh of fewer, larger surface elements.
It is typically not possible to achieve sufficient realism by assigning color values to vertices of each surface element, particularly if the surface elements are large. This problem may be overcome by representing three-dimensional surface properties of the object using a texture in two-dimensional space. Texture mapping permits improved resolution of surface properties, such as color values, within each surface element, and allows certain operations to be performed on the three-dimensional object as if it were flat.
Mapping methods are used to relate points on the surface of a three-dimensional virtual object to corresponding points of a two-dimensional surface. For example, mapping methods can be used to relate points on the surface of a three-dimensional sphere, such as the Earth, to corresponding points of a two-dimensional map. Certain graphics applications perform texture mapping for a three-dimensional virtual object by establishing a global parameterization that links every surface element in the three-dimensional object space to an element in two-dimensional texture space. The mapping process may not be automatic and may require manual input from the user. A goal of these mapping schemes is to produce a coherent two-dimensional texture whose elements are arranged in such a way that the distortion of the object surface is acceptably low. For many complex virtual objects, this poses a problem that is either computationally difficult or intractable.
Furthermore, current graphics applications require a user to paint the surface of a virtual object in two-dimensional texture space before applying the texture on the virtual object in three-dimensional object space. This results in a less interactive, less intuitive experience for the user.
Moreover, current methods do not allow a user to modify the shape of the object after its surface has been painted without losing surface data from unmodified portions of the object. This is due, in part, to the need to re-mesh and re-parameterize the entire model following any modification of the underlying three-dimensional model.
A method of texture painting has recently been introduced to allow texture mapping without global parameterization. M. Foskey et al., “ArtNova: Touch-Enabled 3D Model Design,” IEEE Virtual Reality 2002, pp. 119-126, (March 2002).
However, there remains a need for mapping methods that allow a user to modify the shape of an object after its surface has been painted, without losing the surface data from unmodified portions of the object. There also exists a need for a more efficient graphical rendering method that is able to support the rendering of complex virtual objects, while still allowing a user to interactively paint directly onto the object in object space. Furthermore, there is a need for a method of blending textures while maintaining the interactivity of painting, without creating graphical artifacts.